package main

import (
	"fmt"

	"github.com/jinzhu/gorm"
	_ "github.com/jinzhu/gorm/dialects/mysql" //需要引入mysql驱动包，不然会报错
)

/**
单个表的增、删、改、查
【1】增加表数据
	Create()    Save()

【2】查询表
	db.First(&myuser, "u_age = ?", 22)
【3】修改表数据
	db.Model(&myuser).Update("u_age", 58)
【4】删除表数据
	db.Where("u_age = ?", 22).Delete(&myuser)
*/

func main() {
	db, err := gorm.Open("mysql", "root:123456@tcp(192.168.11.189:3306)/lztest?charset=utf8&parseTime=True&loc=Local")
	if err != nil {
		panic(err)
	}

	defer db.Close()
	fmt.Println("链接成功")
	//创建表
	//db.CreateTable(&User{})

	//【1】插入数据
	/*db.Create(&User{
		UName: "张三",
		UAge:  22,
	})
	db.Save(&User{
		UName: "李四",
		UAge:  18,
	})*/

	//【2】查询数据
	//需要一个接收数据的结构体实例
	//Debug() 是可以看到查询的语句的
	var myuser User
	//db.Debug().First(&myuser, "u_age = ?", 22) //SELECT * FROM `users`  WHERE (u_age = 22) LIMIT 1
	db.First(&myuser, "u_age = ?", 22)
	fmt.Println(myuser)

	//【3】修改表
	//修改表是在查询的基础上进行的
	//db.Model(&myuser).Update("u_age", 58)

	//【4】删除表数据
	//可能是版本的问题，珊珊老师讲的时候是好使的单我在使用的时候不可以
	//db.Debug().Delete(&myuser) //DELETE FROM `users`

	//可以使用下面的方法
	//db.Where("u_age = ?", 22).Delete(&myuser)

}

type User struct {
	UName string
	UAge  int
}

// 注意结构体Person在自动创建的时候会创建为people表
// 为避免理解，我们先不采用Person结构体操作
type Person struct {
	PName string
	PAge  int
}
